======================================= Removing unused functions and dead code ======================================= To remove dead code, add the follow to your makefile:: DEADCODESTRIP := -Wl,-static -fvtable-gc -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s foo : foo.c g++ $(DEADCODESTRIP) $< -o $@ Step by step... -Wl,-static: Link against static libraries. Required for dead-code elimination. -fvtable-gc: C++ virtual method table instrumented with garbage collection information for the linker. -fdata-sections: Keeps data in separate data sections, so they can be discarded if unused. -ffunction-sections: Keeps funcitons in separate data sections, so they can be discarded if unused. -Wl,--gc-sections: Tell the linker to garbage collect and discard unused sections. -s: Strip the debug information, so as to make the code as small as possible.